export const getInputs = () => [[[2, 3, 7, 5, 10]], [[1, 1, 2, 4, 8, 16]]];

/**
 * **[6334. 一个数组所有前缀的分数](https://leetcode.cn/contest/biweekly-contest-102/problems/find-the-score-of-all-prefixes-of-an-array/)**
 *
 * 定义一个数组 `arr` 的 转换数组 `conver` 为：
 *
 * - `conver[i] = arr[i] + max(arr[0..i])`，其中 `max(arr[0..i])` 是满足 `0 <= j <= i` 的所有 `arr[j]` 中的最大值。
 *
 * 定义一个数组 `arr` 的 **分数** 为 `arr` 转换数组中所有元素的和。
 *
 * 给你一个下标从 `0` 开始长度为 `n` 的整数数组 `nums` ，请你返回一个长度为 `n` 的数组 `ans` ，其中 `ans[i]`是前缀 `nums[0..i]` 的分数。
 *
 * @param nums
 * @returns
 */
export default function (nums: number[]): number[] {
	const maxCached: number[] = [];
	const result: number[] = [];
	nums.forEach((val, idx) => {
		let currentMax = maxCached[idx - 1];
		const maxVal = currentMax !== undefined && currentMax > val ? currentMax : val;
		maxCached.push(maxVal);
		result.push(val + maxVal + (result[idx - 1] ?? 0));
	});

	return result;
}
